import dayjs from 'dayjs';
import 'dayjs/locale/zh-cn';

// 设置为中文
dayjs.locale('zh-cn');

/**
 * 日期工具类
 */
export default {
  /**
   * 格式化日期
   * @param {Date|string|number} date 日期对象、时间戳或日期字符串
   * @param {string} format 格式化模式，默认 YYYY-MM-DD HH:mm:ss
   * @returns {string} 格式化后的日期字符串
   */
  format(date, format = 'YYYY-MM-DD HH:mm:ss') {
    if (!date) return '';
    return dayjs(date).format(format);
  },

  /**
   * 获取当前日期时间
   * @param {string} format 格式化模式，默认 YYYY-MM-DD HH:mm:ss
   * @returns {string} 当前日期时间字符串
   */
  now(format = 'YYYY-MM-DD HH:mm:ss') {
    return dayjs().format(format);
  },

  /**
   * 获取当前日期
   * @returns {string} 当前日期字符串，格式为 YYYY-MM-DD
   */
  today() {
    return dayjs().format('YYYY-MM-DD');
  },

  /**
   * 将日期字符串转换为标准格式
   * @param {string} dateStr 日期字符串
   * @returns {string} 标准格式的日期字符串 YYYY-MM-DD HH:mm:ss
   */
  standardize(dateStr) {
    if (!dateStr) return '';
    return dayjs(dateStr).format('YYYY-MM-DD HH:mm:ss');
  },

  /**
   * 判断是否是同一天
   * @param {Date|string|number} date1 日期1
   * @param {Date|string|number} date2 日期2
   * @returns {boolean} 是否是同一天
   */
  isSameDay(date1, date2) {
    return dayjs(date1).isSame(dayjs(date2), 'day');
  },

  /**
   * 计算两个日期之间的差值
   * @param {Date|string|number} date1 日期1
   * @param {Date|string|number} date2 日期2
   * @param {string} unit 单位，day|month|year等
   * @returns {number} 差值
   */
  diff(date1, date2, unit = 'day') {
    return dayjs(date1).diff(dayjs(date2), unit);
  }
}; 